Semiconductor memory devices, including flash memory, typically utilize memory cells to store data as an electrical value, such as an electrical charge or voltage. A flash memory cell, for example, includes a single transistor with a floating gate that is used to store a charge representative of a data value. Flash memory is a non-volatile data storage device that can be electrically erased and reprogrammed. More generally, non-volatile memory (e.g., flash memory, as well as other types of non-volatile memory implemented using any of a variety of technologies) retains stored information even when not powered, as opposed to volatile memory, which requires power to maintain the stored information. Increases in storage density have been facilitated in various ways, including increasing the density of memory cells on a chip enabled by manufacturing developments, and transitioning from single-level flash memory cells to multi-level flash memory cells, so that two or more bits can be stored by each flash memory cell.
Repeated erasure and reprogramming of flash memory cells causes degradation of the charge storage capability (wear). Eventually, the charge storage capability degrades to the point where it becomes impossible or infeasible to recover the original data (e.g., an unrecoverable codeword is read from the flash memory device, the computational resources required to recover a codeword exceed a predefined threshold, or a count of program-erase (P/E) cycles for the flash memory device exceeds a threshold value) and the device is considered worn out. Wear-leveling technology is often used to distribute the wear across the multiple portions of a flash memory device. In a typical system, once the wear limit of a portion of a flash memory device is reached, the entire flash memory device is considered to have failed.